/* 
 * File:   TestLecteurProgramme.cpp
 * Author: bobow
 *
 * Created on 4 janvier 2012, 12:07
 */

#include <iostream>
#include "LecteurProgramme.h"

using namespace std;

/*
 * 
 */
int main(int argc, char* argv[]) {

char nomFich[255];
	if (argc != 2) {
		cout << "Usage : " << argv[0] << " nom_fichier_source" << endl << endl;
		cout << "Entrez le nom du fichier que voulez-vous interpreter : ";
		cin.getline(nomFich, sizeof(nomFich));
	} else
		strncpy(nomFich, argv[1], sizeof(nomFich));
	LecteurProgramme lp(nomFich);
	lp.analyse();
	cout << endl << "Arbre Abstrait : " << endl;
	cout         << "================"  << endl;
	lp.getArbre()->afficher();
	cout << endl << "Table des symboles avant evaluation : " << lp.getTs();
	cout << endl << "Evaluation de l'arbre (interpretation)..." << endl;
	lp.getArbre()->getValeur();
	cout << endl << "Table des symboles apres evaluation : " << lp.getTs();
        string code;
        code = "#include <iostream>\n#include <string>\n#include <stdlib.h>\nusing namespace std;\n";
        for (unsigned int i=0; i<lp.getTf().size();i++)
            code=code+(lp.getTf()[i])->getCpp();
        code = code + "int main() {\n";
        code = code+lp.getTs().addDecl();
        cout << endl << "Transcodage CPP " << endl;
        code = code+lp.getArbre()->getCpp();
        code= code+"return EXIT_SUCCESS;\n}";
        cout << code;
	return 0;
}

